์ž‘์„ฑ: 2026-03-04 05:39:06์ˆ˜์ •: 2026-03-04 05:39:06

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ํ•ต์‹ฌ: ESLint, Prettier, Babel ์ดํ•ดํ•˜๊ธฐ

ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋งˆ์ฃผ์น˜๋Š” ๋„๊ตฌ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ESLint, Prettier, Babel์ž…๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋“ค์ด ๊ฐ๊ฐ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์™œ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


1. ESLint: "์ฝ”๋“œ์˜ ๋…ผ๋ฆฌ์™€ ํ’ˆ์งˆ์„ ๋‹ด๋‹น"

ESLint๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์˜ ๋ฌธ๋ฒ• ์—๋Ÿฌ๋ฅผ ์ฐพ์•„๋‚ด๊ณ , ์ž ์žฌ์ ์ธ ๋ฒ„๊ทธ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๊ฒฝ๊ณ ํ•ด์ฃผ๋Š” **๋ฆฐํ„ฐ(Linter)**์ž…๋‹ˆ๋‹ค.

  • ์ฃผ์š” ์—ญํ• :
    • ์„ ์–ธํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜ ์ฐพ๊ธฐ.
    • ์ •์˜๋˜์ง€ ์•Š์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์ง€.
    • ํŠน์ • ์ฝ”๋”ฉ ์Šคํƒ€์ผ ๊ฐ•์ œ (์˜ˆ: var ๋Œ€์‹  let, const ๊ถŒ์žฅ).
  • ํ•ต์‹ฌ ์ฒ ํ•™: "์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€?"์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค.

2. Prettier: "์ฝ”๋“œ์˜ ๋ฏธ์  ์ผ๊ด€์„ฑ์„ ๋‹ด๋‹น"

Prettier๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌํ•ด์ฃผ๋Š” **ํฌ๋งทํ„ฐ(Formatter)**์ž…๋‹ˆ๋‹ค.

  • ์ฃผ์š” ์—ญํ• :
    • ์ค„ ๋ฐ”๊ฟˆ, ๋“ค์—ฌ์“ฐ๊ธฐ(Tab vs Space) ์ž๋™ ๊ต์ •.
    • ๋”ฐ์˜ดํ‘œ ์Šคํƒ€์ผ(' vs ") ํ†ต์ผ.
    • ์„ธ๋ฏธ์ฝœ๋ก (;) ๋ˆ„๋ฝ ๋ณด์ •.
  • ํ•ต์‹ฌ ์ฒ ํ•™: "์ฝ”๋“œ๊ฐ€ ์˜ˆ์˜๊ณ  ์ผ๊ด€๋˜๊ฒŒ ๋ณด์ด๋Š”๊ฐ€?"์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค.
  • ํ˜‘์—… ์‹œ ์ด์ : ๋ˆ„๊ฐ€ ์ž‘์„ฑํ•˜๋“  ์ฝ”๋“œ๊ฐ€ ๋™์ผํ•œ ํ˜•์‹์„ ์œ ์ง€ํ•˜๋ฏ€๋กœ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ์ˆ˜์›”ํ•ด์ง‘๋‹ˆ๋‹ค.

3. Babel: "์ฝ”๋“œ์˜ ํ˜ธํ™˜์„ฑ์„ ๋‹ด๋‹น"

Babel์€ ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•(ES6+)์„ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €(IE ๋“ฑ)์—์„œ๋„ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” **ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ(Transpiler)**์ž…๋‹ˆ๋‹ค.

  • ์ฃผ์š” ์—ญํ• :
    • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜(=>)๋ฅผ ์ผ๋ฐ˜ function์œผ๋กœ ๋ณ€ํ™˜.
    • class, import ๋“ฑ ์ตœ์‹  ๋ฌธ๋ฒ•์„ ํ•˜์œ„ ๋ฒ„์ „ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฒˆ์—ญ.
    • JSX(React) ๋ฌธ๋ฒ•์„ ์ผ๋ฐ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜.
  • 2026๋…„ ํŠธ๋ Œ๋“œ: ์ตœ๊ทผ์—๋Š” ์†๋„๊ฐ€ ๋” ๋น ๋ฅธ SWC๋‚˜ esbuild๊ฐ€ Babel์˜ ์—ญํ• ์„ ๋Œ€์ฒดํ•˜๊ณ  ์žˆ๋Š” ์ถ”์„ธ์ž…๋‹ˆ๋‹ค.

4. ์ด ๋„๊ตฌ๋“ค์„ ์™œ ํ•จ๊ป˜ ์“ฐ๋‚˜์š”? (ํ˜‘์—… ์‹œ๋„ˆ์ง€)

๊ตฌ๋ถ„ESLintPrettierBabel
๊ด€์‹ฌ์‚ฌ์ฝ”๋“œ ์—๋Ÿฌ ๋ฐ ํ’ˆ์งˆ (Logic)์Šคํƒ€์ผ๋ง ๋ฐ ํฌ๋งทํŒ… (Style)๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ (Compatibility)
์ž‘๋™ ์‹œ์ ๊ฐœ๋ฐœ ์ค‘ (IDE) / ๋นŒ๋“œ ์‹œ์ฝ”๋“œ ์ €์žฅ ์‹œ (Save)๋นŒ๋“œ ์‹œ (Build)

์ฃผ์˜: ESLint์™€ Prettier์˜ ์ถฉ๋Œ ๋ฐฉ์ง€

๋‘ ๋„๊ตฌ ๋ชจ๋‘ ์Šคํƒ€์ผ ๊ด€๋ จ ์„ค์ •์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด ์„œ๋กœ ๋ถ€๋”ชํž ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ: ESLint๋Š” ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ์›ํ•˜๋Š”๋ฐ, Prettier๋Š” ํฐ๋”ฐ์˜ดํ‘œ๋กœ ์ž๋™ ์ˆ˜์ •ํ•ด๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ) ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ณดํ†ต eslint-config-prettier๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์Šคํƒ€์ผ ๊ต์ • ๊ถŒํ•œ์„ Prettier์—๊ฒŒ ์œ„์ž„ํ•˜๋Š” ์„ค์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.


5. ์‹ค๋ฌด ๊ถŒ์žฅ ์„ค์ • ์˜ˆ์‹œ (Standard Config)

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์•„๋ž˜ ํŒŒ์ผ๋“ค์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ์„ค์ •์ž…๋‹ˆ๋‹ค.

โ‘  Prettier ์„ค์ • (.prettierrc)

{
  "printWidth": 100,          // ํ•œ ์ค„ ์ตœ๋Œ€ ๊ธธ์ด
  "tabWidth": 2,              // ๋“ค์—ฌ์“ฐ๊ธฐ ์นธ ์ˆ˜
  "useTabs": false,           // ํƒญ ๋Œ€์‹  ์ŠคํŽ˜์ด์Šค ์‚ฌ์šฉ
  "semi": true,               // ๋ฌธ์žฅ ๋ ์„ธ๋ฏธ์ฝœ๋ก  ์‚ฌ์šฉ
  "singleQuote": true,        // ์ž‘์€๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ
  "trailingComma": "all",     // ์—ฌ๋Ÿฌ ์ค„ ์š”์†Œ์˜ ๋งˆ์ง€๋ง‰ ์ฝค๋งˆ ์ถ”๊ฐ€
  "bracketSpacing": true,     // ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์ค‘๊ด„ํ˜ธ ์‚ฌ์ด ๊ณต๋ฐฑ
  "arrowParens": "always"     // ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ธ์ž ๊ด„ํ˜ธ ํ•„์ˆ˜
}

โ‘ก ESLint ์„ค์ • (eslint.config.js - v9+ Flat Config ๊ธฐ์ค€)

์ตœ์‹  ESLint๋Š” eslint.config.js๋ผ๋Š” ์ด๋ฆ„์˜ ํ”Œ๋žซ ์„ค์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

import js from "@eslint/js";
import prettier from "eslint-config-prettier";
 
export default [
  js.configs.recommended, // ๊ธฐ๋ณธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ถ”์ฒœ ๊ทœ์น™
  prettier,               // Prettier์™€ ์ถฉ๋Œํ•˜๋Š” ๊ทœ์น™ ๋น„ํ™œ์„ฑํ™”
  {
    rules: {
      "no-unused-vars": "warn",    // ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋Š” ๊ฒฝ๊ณ ๋งŒ
      "no-console": "off",         // ์ฝ˜์†” ๋กœ๊ทธ ํ—ˆ์šฉ
      "eqeqeq": "error",           // === ์‚ฌ์šฉ ๊ฐ•์ œ
      "curly": "error"             // ์ œ์–ด๋ฌธ ์ค‘๊ด„ํ˜ธ ํ•„์ˆ˜
    }
  }
];

6. ์š”์•ฝ

  1. ์—๋Ÿฌ๋ฅผ ์žก๊ณ  ์‹ถ๋‹ค๋ฉด? -> ESLint
  2. ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ค„ ๋งž์ถ”๊ณ  ์‹ถ๋‹ค๋ฉด? -> Prettier
  3. ์ตœ์‹  ๋ฌธ๋ฒ•์„ ์–ด๋””์„œ๋“  ๋Œ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด? -> Babel

์ด ์„ธ ๊ฐ€์ง€ ๋„๊ตฌ๋ฅผ ์กฐํ™”๋กญ๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ƒ์‚ฐ์„ฑ ๋†’์€ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ์ฒซ๊ฑธ์Œ์ž…๋‹ˆ๋‹ค.